package com.googlecode.twitter;

import org.joda.time.DateTime;
import com.googlecode.ApiException;

/**
 * Copyright 2006 Van de Wijgerd B.V. All rights reserved.
 */
public interface TwitterApi {
    Status[] getPublicTimeline() throws ApiException;

    Status[] getPublicTimeline(Long sinceId) throws ApiException;

    Status[] getFriendsTimeline() throws ApiException;

    Status[] getFriendsTimeline(String id) throws ApiException;

    Status[] getFriendsTimeline(String id, DateTime since, Integer page)
            throws ApiException;

    Status[] getUserTimeline() throws ApiException;

    Status[] getUserTimeline(String id, Integer count, DateTime since,
                                    Integer page) throws ApiException;

    Status showStatus(long id) throws ApiException;

    Status updateStatus(String status) throws ApiException;

    Status[] getReplies() throws ApiException;

    Status[] getReplies(Integer page) throws ApiException;

    Status destroyStatus(long id) throws ApiException;

    User[] getFollowing() throws ApiException;

    User[] getFollowing(String id,Integer page,Boolean lite,DateTime since) throws ApiException;

    User[] getFollowers() throws ApiException;

    User[] getFollowers(Boolean lite) throws ApiException;

    User[] getFeatured() throws ApiException;

    User showUser(String id) throws ApiException;

    DirectMessage[] getDirectMessages() throws ApiException;

    DirectMessage[] getDirectMessages(DateTime since, String sinceId,
                                             Integer page) throws ApiException;

    DirectMessage[] getSentDirectMessages() throws ApiException;

    DirectMessage[] getSentDirectMessages(DateTime since, String sinceId,
                                                 Integer page) throws ApiException;

    DirectMessage newDirectMessage(String user, String text)
                                                         throws ApiException;

    DirectMessage destroyDirectMessage(long id) throws ApiException;

    User createFriendship(String id) throws ApiException;

    User destroyFriendship(String id) throws ApiException;

    Status[] getFavorites() throws ApiException;

    Status[] getFavorites(String id, Integer page) throws ApiException;

    Status createFavorite(long id) throws ApiException;

    Status destroyFavorite(long id) throws ApiException;

    User follow(String id) throws ApiException;

    User leave(String id) throws ApiException;
}
